@瞌睡虫
2年前 提问
1个回答

Web应用程序无法很好解决可提交任意输入问题的原因是什么

X0_0X
2年前

Web应用程序无法很好地解决用户可提交任意输入问题的原因是:

  • 不成熟的安全意识:近年来,人们对Web应用程序安全问题的意识有所增强,但与网络和操作系统这些发展更加完善的领域相比,人们对Web应用程序安全问题的意识还远不够成熟。虽然大多数IT安全人员掌握了相当多的网络安全与主机强化基础知识,但他们对与Web应用程序安全有关的许多核心概念仍然不甚了解,甚至存有误解。当前,在其工作中,Web应用程序开发人员往往需要整合数十、甚至数百个第三方数据包,导致他们无法集中精力研究基础技术。即使是经验丰富的Web应用程序开发人员,也经常会对所用的编程框架的安全性做出错误假设,或遇到一些对他们而言完全陌生的基本缺陷类型。

  • 独立开发:大多数Web应用程序都由企业自己的员工或合作公司独立开发。即使应用程序采用第三方组件,通常也是使用新代码将第三方组件进行自定义或拼凑在一起。在这种情况下,每个应用程序都各不相同,并且可能包含其独有的缺陷。这种情形与组织购买业内一流产品并按照行业标准指南安装的典型基础架构部署形成鲜明对照。

  • 欺骗性的简化:使用今天的Web应用程序和开发工具,一个程序员新手也可能在短期内从头开始创建一个强大的应用程序。但是,在编写功能性代码与编写安全代码之间存在巨大的差异。许多Web应用程序由善意的个人创建,他们只是缺乏发现安全问题的知识与经验。

  • 迅速发展的威胁形势:Web应用程序攻击与防御研究发展相对不成熟,是一个正蓬勃发展的领域,其中新概念与威胁出现的速度比传统的技术要快得多。在客户端方面尤其如此,针对特定攻击的公认防御机制往往会在一些研究中失去作用,这些研究最终成就了新的攻击技巧。在项目开始之初就完全了解了当前威胁的开发团队,很可能到应用程序开发完成并部署后会面临许多未知的威胁。

  • 资源与时间限制:由于独立、一次性开发的影响,许多Web应用程序开发项目会受到严格的时间与资源限制。通常,设计或开发团队不可能雇用专职的安全专家,而且由于项目进程的拖延,往往要等到项目周期的最后阶段才由专家进行安全测试。为了兼顾各种要素,按期开发出稳定而实用的应用程序的要求往往使开发团队忽视不明显的安全问题。小型组织一般不愿多花时日评估一个新的应用程序。快速渗透测试通常只能发现明显的安全漏洞,而往往会遗漏比较细微、需要时间和耐心来发现的漏洞。

  • 技术上强其所难:Web应用程序使用的许多核心技术出现于万维网早期阶段,那时的状况与目前十分不同。从那以后,其功能已远远超越最初的设想,例如,在许多基于AJAX的应用程序中使用JavaScript进行数据传输。随着对Web应用程序功能要求的变化,用于实现这种功能的技术已远远落后于其发展要求,而开发人员还是沿用原有的技术来满足新的需求。因此,这种做法造成的安全漏洞与无法预料的负面影响也就不足为奇了。

  • 对功能的需求不断增强:在设计应用程序时,开发人员主要考虑是的功能和可用性。曾经静态的用户资源现在包含社交网络功能,允许用户上传照片,对页面进行“维基”风格的编辑。以前,应用程序设计人员可以仅仅通过用户名和密码来创建登录功能,而现今的站点则包含密码恢复、用户名恢复、密码提示,以及在将来访问时记住用户名和密码的选项。无疑,这类站点声称其能够提供各种安全功能,但实际上,这些功能不过是增大了该站点的受攻击面而已。